package com.elite.annotation.config;

import com.elite.annotation.condition.SimplCondition;
import com.elite.annotation.listener.SimpleListener;
import com.elite.xml.entity.Student;
import com.elite.xml.entity.User;
import org.springframework.context.annotation.*;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * @Import注解给容器导入组件（bean），有三种方式：
 * 1.导入简单的class对象，它会把该class对象注册到容器中，bean的名称id是全类名
 * 2.实现ImportSelector接口，该接口是提供是selectImports方法，返回值是对象的全类名
 * 3.实现ImportBeanDefinitionRegistrar接口，自己去自动注册bean的定义消息
 *
 */
//@Import({Student.class, MyImportSelector.class})
@Import({Student.class})
@Configuration
public class BeanConfig {

	/**
	 * @Conditional 这个注解指定你的判断条件实现类
	 * @Primary 这个注解是如果有多个同样的bean类型，首选就是使用@Primary注解的bean。多数据源会使用到这个
	 *
	 * @return
	 */
	@Bean
	@Conditional(value = SimplCondition.class)
	@Primary
	public User user(){
		return new User();
	}

	@Bean
	public SimpleListener simpleListener(){
		return new SimpleListener();
	}
}
